package com.clicacao.clicacao;

import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.clicacao.library.ClicacaoFunctions;
import com.clicacao.library.DatabaseHandler;

public class SucessLoginScreen extends Activity {
	
	//Variaveis para manipulacao do banco de dados
	DatabaseHandler db;
	HashMap<String, String> hashMap;
	
	//Controles do formulario
	Button btnAcessarInformacoesUsuario;
	Button btnAcessarAventurasUsuario;
	Button btnAcessarItensUsuario;
	Button btnAcessarUpisUsuario;
	Button btnAbout;
	Button btnLogout;
	TextView txtUserName;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sucess_login_screen);
		
		btnAcessarInformacoesUsuario = (Button)findViewById(R.id.btnUserInformation);
		btnAcessarAventurasUsuario = (Button)findViewById(R.id.btnUserAdventures);
		btnAcessarItensUsuario = (Button)findViewById(R.id.btnUserItens);
		btnAcessarUpisUsuario = (Button)findViewById(R.id.btnUserUpis);
		btnLogout = (Button)findViewById(R.id.btnLogout);
		btnAbout = (Button)findViewById(R.id.btnAbout);
		
		txtUserName = (TextView)findViewById(R.id.txtUserName);
		
		//Carregando as informacoes do usuario na tela
		db = new DatabaseHandler(getApplicationContext());
		hashMap = db.getUserDetails();
		
		txtUserName.setText(hashMap.get("nome"));
		//Toast.makeText(getApplicationContext(), hashMap.get("_id"), Toast.LENGTH_SHORT).show();
		
		//Quando o usuario faz acesso ao sistema, ja carrega assincronamente as aventuras as quais este tem acesso
		new AsyncTask<Void, Void, JSONObject>(){
			
			//Preciso do id do usuario
			String uid = hashMap.get("_id");
			
			//ClicacaoFunctions
			ClicacaoFunctions clicacaoFunctions = new ClicacaoFunctions();
			
			//Objeto JSON auxiliar
			JSONObject json;

			@Override
			protected JSONObject doInBackground(Void... params) {
				//Primeiro fazemos a requisicao web para pegar as aventuras do usuario em JSON
				json = clicacaoFunctions.getUserAdventures(uid);
				
				return json;
			}

			@Override
			protected void onPostExecute(JSONObject result) {
				super.onPostExecute(result);
				
				//Vamos analisar agora o resultado do retorno
				try{
					if(result.getString("success").equals("1")){
						String res = result.getString("success");
						if(Integer.parseInt(res) == 1){
							//Sucesso em trazer o JSON. Pego as aventuras agora
							JSONArray json_array = json.getJSONArray("adventure");
							Integer i = Integer.valueOf(0);
							//Para cada objeto do array adventure, insere no banco de dados
							for(i = 0; i < json_array.length(); i++){
								JSONObject json_adventure = json_array.getJSONObject(i);
								db.addUserAdventure(json_adventure.getString("uaid"), json_adventure.getString("titulo"), json_adventure.getString("descricao"));
							}
						}
					}
				}catch(JSONException e){
					e.printStackTrace();
				}
			}
			
		}.execute();
		
		
		//Programando o botao de acessar informacoes do usuario
		btnAcessarInformacoesUsuario.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent i = new Intent(SucessLoginScreen.this, UserInformationScreen.class);
				SucessLoginScreen.this.startActivity(i);
				//SucessLoginScreen.this.finish();
			}
		});
		
		//Botao para acessar itens do usuario
		btnAcessarItensUsuario.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				//Inicio a outra atividade sem finalizar esta
				Intent i = new Intent(SucessLoginScreen.this, UserItensScreen.class);
				SucessLoginScreen.this.startActivity(i);
				
			}
		});
		
		//Botao para acessar as UPIs do usuario
		btnAcessarUpisUsuario.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				//Inicio a outra atividade sem finalizar esta
				Intent i = new Intent(SucessLoginScreen.this, UserUpisScreen.class);
				SucessLoginScreen.this.startActivity(i);
			}
		});
		
		//Botao para acessar as aventuras do usuario
		btnAcessarAventurasUsuario.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				//Inicio a outra atividade sem finalizar esta
				Intent i = new Intent(SucessLoginScreen.this, UserAdventuresScreen.class);
				SucessLoginScreen.this.startActivity(i);
			}
		});
		
		//Botao para se fazer o logout do sistema
		btnLogout.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				//Atualmente sempre fecha a aplicacao sem perguntar nada
				//Depois posso implementar uma mensagem de confirmacao
				finish();
			}
		});
		
		//Programando botao que vai para a tela de sobre o sistema
		btnAbout.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				Intent i = new Intent(SucessLoginScreen.this, AboutScreen.class);
				SucessLoginScreen.this.startActivity(i);
			}
		});
		
	}

}
